package com.bestcem.xm.member.dao;

import com.bestcem.xm.member.entity.pojo.ExtendFieldEnumItemDO;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.List;

/**
 * @author dc.wang <dc.wang@idiaoyan.com>
 * @version V1.0
 * @description 扩展字段枚举选项持久层接口
 * @date 2021/7/20
 */
public interface ExtendFieldEnumItemDao {
    /**
     * 查询扩展字段标识集合
     *
     * @param extendFields 扩展字段标识集合
     * @author dc.wang <dc.wang@idiaoyan.com>
     * @date 2021/8/10
     */
    Collection<ExtendFieldEnumItemDO> findByFieldIds(@NotEmpty Collection<String> extendFields);

    /**
     * 查询扩展字段标识集合
     *
     * @param extendFieldIds
     * @param isDisplay
     * @return
     */
    List<ExtendFieldEnumItemDO> findByFieldIds(List<String> extendFieldIds, boolean isDisplay);

    /**
     * 批量插入枚举选项
     *
     * @param enumItems 枚举选项集合
     * @author dc.wang <dc.wang@idiaoyan.com>
     * @date 2021/8/10
     */
    Integer batchInsert(@NotEmpty Collection<ExtendFieldEnumItemDO> enumItems);

    /**
     * 批量修改枚举选项信息。注：若不存在
     *
     * @param enumItems 枚举选项
     * @author dc.wang <dc.wang@idiaoyan.com>
     * @date 2021/7/20
     */
    void batchUpdate(@NotEmpty Collection<ExtendFieldEnumItemDO> enumItems);

    /**
     * 批量所属相同扩展字段的枚举选项
     *
     * @param ids 举选项标识集合
     * @author dc.wang <dc.wang@idiaoyan.com>
     * @date 2021/7/20
     */
    Integer batchDeleteByIds(@NotNull Collection<String> ids);

    /**
     * 批量所属相同扩展字段的枚举选项
     *
     * @param fieldIds 扩展字段标识集合
     * @author dc.wang <dc.wang@idiaoyan.com>
     * @date 2021/7/20
     */
    Integer batchDeleteByFieldIds(@NotNull Collection<String> fieldIds);

    /**
     * 根据条件获取数据
     *
     * @param ids
     * @param displayStatus
     */
    List<ExtendFieldEnumItemDO> findByFieldIdsAndDisplayStatus(Collection<String> ids, int displayStatus);

    /**
     * 根据id查询枚举字段选项
     *
     * @param ids 枚举字段id
     * @return List<ExtendFieldEnumItem>
     */
    List<ExtendFieldEnumItemDO> findEnumsByIds(Collection<String> ids);

}
